home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
tex
/
mf_files.arc
/
ROMANL.MF
< prev
next >
Wrap
Text File
|
1988-03-11
|
40KB
|
820 lines
% Computer Modern Roman lower case:
% These letters were originally coded by D. E. Knuth in November, 1979,
% inspired by the Monotype faces used in {\sl The Art of Computer Programming}.
% Sans serif designs by Richard Southall were added in April, 1982.
% The programs were revised for the new \MF\ conventions in 1985.
% Character codes \0141 through \0172 are generated.
cmchar "The letter a";
beginchar("a",9u#,x_height#,0);
bh#:=min(bar_height#,1.14x_height#-bar_height#); define_pixels(bh);
italcorr 1/3[bh#,x_height#]*slant+.5stem#-serif_fit#-2u#;
adjust_fit(0,serif_fit# if serifs: if hair#+.5stem#>1.5u#:-.25u# fi\\fi);
pickup fine.nib; top y3r=h+vround 1.5oo;
if serifs: pos1(flare,180); pos2(hair,180);
pos3(vair,90); lft x1r=hround max(u,2.1u-.5flare); x3=.5w-.5u;
y1=min(bh+.5flare+2vair+2,.9[bh,h]-.5flare);
bulb(3,2,1); % bulb
else: pos1(5/7[vair,flare],95); x1l=good.x 1.5u; x1r:=good.x x1r;
pos3(1/8[vair,thin_join],90);
x3=.5w-.2u; top y1r=vround .82[bh,top y3r];
filldraw stroke term.e(3,1,left,.9,4); fi % terminal
pos4(stem,0); rt x4r=hround(w-2.5u+.5stem); y4=1/3[bh,h];
pos5(stem,0); x5=x4; y5=max(.55bh,2vair);
filldraw stroke super_arc.e(3,4)&z4e..z5e; % arc and stem
pos6(.3[thin_join,vair],90); x6=x4; bot y6=bh;
pos7(hround(curve-2stem_corr),180);
lft x7r=hround max(.5u,1.5u-.5curve); y7=1/3[top y8l,top y6r];
pos8(vair,270); x8l=.5w-.75u; bot y8r=-oo;
pos9(thin_join,360); z9l=z5l;
(x,y8r)=whatever[z8l,z9l]; x8r:=max(x,x8-u);
{{interim superness:=more_super;
filldraw stroke z9e{down}...z8e{left}...{up}z7e&super_arc.e(7,6)}}; % bowl
if serifs: numeric shaved_stem; shaved_stem=hround(stem-3stem_corr);
if hair#+.5stem#>1.5u#: pickup tiny.nib;
pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
pos10(shaved_stem,0); x10=x5'; y10=.2[.5tiny,bh];
pos11(shaved_stem,0); rt x11r=hround(w-.25u); bot y11=0;
pos12(shaved_stem,0); x11=x12; top y12=slab+eps;
filldraw z5'l---z10l...z11l{right}--z11r
--z12r{left}...z10r+.75(z12-z11)---z5'r--cycle; % foot
else: pickup crisp.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
pos10(shaved_stem,0); x10=x5'; y10=1/3bh;
pos11(.2[vair,stem],90); x11r=.5[x10r,x12r]; bot y11l=-vround .5oo;
pos12(hair,180); rt x12l=hround(w-.1u); y12=max(y10,y11+vair);
pos13(hair,180); x13=x12; top y13=max(vround .6bh,top y12);
(x',y11l)=whatever[z11r,z12r]; x11l:=max(x',x10);
filldraw stroke z5'e---z10e...z11e{right}...z12e---z13e; fi % hook
else: numeric shaved_stem; shaved_stem=hround(stem-stem_corr);
pickup tiny.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
pos10(shaved_stem,0); x10=x5'; bot y10=0;
filldraw stroke z5'e--z10e; fi % base of stem
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;
cmchar "The letter b";
beginchar("b",10u#+serif_fit#,asc_height#,0);
italcorr .5x_height#*slant+min(.5curve#-u#,-.25u#);
adjust_fit(serif_fit#,0);
pickup tiny.nib; pos1(stem',0); pos2(stem,0);
pos0'(stem',0); pos0(stem,0); z0l=z0'l; x0'=x1; x0=x2;
lft x1l=hround(2.5u-.5stem'); top y1=h;
numeric edge; edge=rt x2r;
pickup fine.nib; pos3(if hefty:thin_join else: hair fi,180);
pos4(vair,90); pos5(curve,0); pos6(vair,-90); penpos7(x3l-x3r,-180);
rt x3l=max(rt x3l-(lft x3r-tiny.lft x2l),1/3[rt x2,edge]);
y3=1/8[bar_height,x_height];
x4l=w-.5(w-serif_fit)+.5u; top y4r=x_height+oo;
rt x5r=hround min(w-1.35u+.5curve,w-.6u); y5=.5x_height;
x6l=x4l-.2u; bot y6r=-oo;
x7=x3; y7=min(y3,y6+y4-y3+.6vair);
(x,y4r)=whatever[z3l,z4l]; x4r:=min(x,.5[x4,x5r]);
(x',y6r)=whatever[z7l,z6l]; x6r:=min(x',.5[x6,x5r]);
filldraw stroke z3e{up}...pulled_arc.e(4,5)&pulled_arc.e(5,6)...{up}z7e; % bowl
y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{right}z4l));
y2=ypart(((edge,h)--(edge,0))intersectionpoint(z6l{left}...{up}z7l));
pickup tiny.nib; filldraw stroke z1e--z0'e--z0e--z2e; % stem
pickup crisp.nib; pos8(hair,0); pos7'(stem,0);
z7'=z2; x8l=x7'l; bot y8=0;
filldraw stroke z7'e--z8e; % point
if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); fi % upper serif
penlabels(0,1,2,3,4,5,6,7,8); endchar;
cmchar "The letter c";
beginchar("c",8u#,x_height#,0);
italcorr x_height#*slant-.2u#;
adjust_fit(if monospace: .5u#,.5u# else: 0,0 fi);
pickup fine.nib; pos2(vair',90); pos4(vair',270);
x2=x4=.5(w+u); top y2r=vround(h+1.5oo); bot y4r=-oo;
pos3(curve,180); lft x3r=hround max(.6u,1.35u-.5curve); y3=.5h;
if serifs: pos1(hair,0); pos0(flare,0);
y1=min(bar_height+.5flare+2vair'+2,.9[bar_height,h]-.5flare);
rt x1r=hround(w-.7u); bulb(2,1,0); % bulb
pos5(hair,0); rt x5r=hround(w-.5u);
y5=max(good.y(.5bar_height-.9),y4l+vair');
(x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u);
filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
& pulled_super_arc.e(3,4)(.5superpull)
..tension .9 and 1..{x5-x4,5(y5-y4)}z5e; % arc and lower terminal
else: pos1(4/7[vair',flare],80);
rt x1r=hround(w-.6u); top y1r=vround .82[bar_height,top y2r];
filldraw stroke term.e(2,1,right,.8,4); % upper terminal
pos5(.6[vair',flare],275); rt x5r=hround(w-.5u);
y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
forsuffixes e=l,r: path p.e; p.e=z4e{right}..tension .9 and 1..z5e;
if angle direction 1 of p.e>75:
p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi endfor
filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
& pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and lower terminal
penlabels(0,1,2,3,4,5); endchar;
cmchar "The letter d";
beginchar("d",10u#+serif_fit#,asc_height#,0);
italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
adjust_fit(0,serif_fit#);
pickup tiny.nib; pos1(stem',0); pos2(stem,0);
pos0'(stem',0); pos0(stem,0); z0r=z0'r; x0'=x1; x0=x2;
rt x1r=hround(w-2.5u+.5stem'); top y1=h;
numeric edge; edge=lft x2l;
pickup fine.nib; pos3(if hefty:thin_join else: hair fi,0);
pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360);
lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),1/3[lft x2,edge]);
y3=1/8[bar_height,x_height];
x4l=.5(w-serif_fit)-.3u; top y4r=x_height+oo;
lft x5r=hround max(1.35u-.5curve,.6u); y5=.5x_height;
x6l=x4l-.2u; bot y6r=-oo;
x7=x3; y7=min(y3,y6+y4-y3+.6vair);
(x,y4r)=whatever[z3l,z4l]; x4r:=max(x,.5[x5r,x4]);
(x',y6r)=whatever[z7l,z6l]; x6r:=max(x',.5[x5r,x6]);
filldraw stroke z3e{up}...pulled_arc.e(4,5)
& pulled_arc.e(5,6)...{up}z7e; % bowl
y0=ypart(((edge,h)--(edge,0))intersectionpoint(z3l{up}...{left}z4l));
pickup tiny.nib; bot y2=if serifs:-min(oo,serif_drop) else: 0 fi;
filldraw stroke z1e--z0'e--z0e--z2e; % stem
if serifs: sloped_serif.l(1,0',a,1/3,jut,serif_drop); % upper serif
sloped_serif.r(2,0,b,1/3,jut,min(oo,serif_drop)); fi % lower serif
penlabels(0,1,2,3,4,5,6,7); endchar;
cmchar "The letter e";
beginchar("e",7.25u#+max(.75u#,.5curve#),x_height#,0);
italcorr .5[bar_height#,x_height#]*slant+.5min(curve#-1.5u#,0);
adjust_fit(if monospace: .25u#,.5u# else: 0,0 fi);
numeric left_curve,right_curve;
left_curve=right_curve+6stem_corr=curve if not serifs: -3stem_corr fi;
if right_curve<tiny.breadth: right_curve:=tiny.breadth; fi
if left_curve<tiny.breadth: left_curve:=tiny.breadth; fi
pickup tiny.nib; pos1(right_curve,0);
pos2(vair,90); pos3(left_curve,180);
y1=good.y bar_height; top y2r=h+vround 1.5oo; y0l=bot y1;
rt x1r=hround min(w-.5u,w-u+.5right_curve);
lft x3r=hround max(.5u,1.25u-.5left_curve); x2=.5w+.25u;
{{interim superness:=more_super;
filldraw stroke super_arc.e(1,2)}}; % right bowl
y3=.5[y2,y4]; bot y4r=-oo; x4=x2+.25u;
if serifs: pos4(vair',270); pos5(hair,360);
y5=max(good.y(.5bar_height-.9),y4l+vair); x5r=x1r;
(x,y4l)=whatever[z4r,z5]; x4l:=min(x,x4l+.5u);
filldraw stroke pulled_arc.e(2,3) & pulled_arc.e(3,4)
...{x5-x4,5(y5-y4)}z5e; % left bowl, arc, and terminal
else: pos4(vair,270);
filldraw stroke super_arc.e(2,3) & super_arc.e(3,4); % left bowl and arc
pickup fine.nib; pos4'(vair,270); z4=z4';
pos5(.5[vair,flare],275); rt x5r=hround(w-.6u);
y5r=good.y(y5r+1/3bar_height-y5); y5l:=good.y y5l; x5l:=good.x x5l;
filldraw stroke term.e(4',5,right,1,4); fi % terminal
path testpath; testpath=super_arc.r(2,3) & super_arc.r(3,4);
y1'r=y0r=y0l+.6[thin_join,vair]; y1'l=y0l; x1'l=x1'r=x1;
forsuffixes $=l,r:
x0$=xpart(((0,y0$)--(x1,y0$)) intersectionpoint testpath); endfor
fill stroke z0e--z1'e; %